DELETE 语句

发表于 2018-3-5 21:26:34 | 分类于 SQL |

DELETE 语句

DELETE 语句用于删除表中的行。

语法

DELETE FROM table_name
WHERE some_column=some_value;

注意:

DELETE 语句中的 WHERE 子句,规定哪条记录或者哪些记录需要删除。如果省略了 WHERE 子句,所有的记录都将被删除!

示例

样本数据库与 SELECT 语句 一章相同。

DELETE 示例

从 "Websites" 表中删除网站名为 "淘宝 " 且国家为 CN 的网站 :

DELETE FROM Websites
WHERE name='淘宝' AND country='CN';

输出结果:

mysql> DELETE FROM Websites
    -> WHERE name='淘宝' AND country='CN';

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 菜鸟教程      | http://www.runoob.com/    | 4689  | CN      |
| 3  | 微博          | http://weibo.com/         | 20    | CN      |
| 4  | Facebook     | https://www.facebook.com/ | 3     | USA     |
+----+--------------+---------------------------+-------+---------+

删除所有数据

可以在不删除表的情况下,删除表中所有的行。这意味着表结构、属性、索引将保持不变:

DELETE FROM table_name;

DELETE * FROM table_name;

注意:在删除记录时要格外小心!因为不能重来!

更多:SQL关于删除的三个语句(DROP、TRUNCATE、DELETE)的区别。

DROP

删除表test,并释放空间,将test删除的一干二净:

DROP test;

TRUNCATE

删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在:

TRUNCATE test;

DELETE

(1)删除指定数据

删除表 test 中年龄等于 30 的且国家为 US 的数据:

DELETE FROM test WHERE age=30 AND country='US';

(2)删除整个表

仅删除表test内的所有内容,保留表的定义,不释放空间:

DELETE FROM test;

 或者 
DELETE * FROM test;